package _3_errhandling

import (
	"errors"
	"fmt"
)

func test() (int, error) {
	fmt.Println("")
	return 1, errors.New("")
	//return 0, fmt.Errorf("半径小于%d", 0)
}

func returnError() {

	value, err := test()
	if err != nil {
		fmt.Println("程序异常")
		return
	}
	if err != nil {
		fmt.Println("程序异常")
		panic(err) // panic终止程序执行
	}
	fmt.Println(value)
}

func osErr() {
	// 利用defer+recover来捕获错误
	defer func() {
		// 调用recover内置函数，可以捕获错误
		err := recover()
		// 如果没有捕获错误，返回值为零值，nil
		if err  != nil {
			fmt.Println("错误已经捕获")
			fmt.Println("err是", err)
		}
	}()
	num1 := 10
	num2 := 0
	result := num1 / num2
	fmt.Println(result)
}

func customErr() (err error) {
	num2 := 0
	if num2 == 0 {

		return errors.New("除数不能为0")
	} else {
		return nil
	}
}